<h1>AOP concepts and terminology</h1>

<p>
    As <b>AOP</b> has been here for a while now, it comes with a set of terms
    dedicated to each concept of the <b>AOP</b> context. As these terms might
    not be very intuitive, here are the ones you might want to know before
    dealing with <b>Aspect PHP</b>:
</p>

<ul>
    <li>
        <strong>Aspect</strong>:
        <br />
        An aspect is the part of the application which cross-cuts the core
        concerns of multiple objects.
        In <b>Aspect PHP</b>, aspects are implemented as regular classes which
        are tagged by the <u>@aspect</u> annotation. The methods of an aspect
        class represent advices.
    </li>
    <li>
        <strong>Join point</strong>:
        <br />
        A join point is a point in the flow of a program. For example the
        execution of a method or the throw of an exception.
        In <b>Aspect PHP</b>, join points are objects which contain more
        information about the circumstances. Therefore, a join point acts like
        a context with all the required informations for the developer.
    </li>
    <li>
        <strong>Advice</strong>:
        <br />
        An advice is the action taken by an aspect at a particular join point.
        Advices are implemented as methods of the aspect class. These methods
        are executed before and / or after the join point is reached.
    </li>
    <li>
        <strong>Pointcut</strong>:
        <br />
        The pointcut defines a set of join points which need to be matched
        before running an advice. The pointcut is configured by a pointcut
        expression which defines when and where an advice should be executed.
    </li>
</ul>